import { request } from '@@/plugin-request/request';
import { transformParams, transformProTableData } from '@/utils/utils';

// 主机信息
export declare type HostInfoField =
  | 'id' // 主键
  | 'name' // 主机名称
  | 'mac' // MAC 地址
  | 'gateway' // 网关地址（默认：255.255.255.255）
  | 'port' // 端口（默认：9）
  | 'remark' // 备注
  | 'deleted' // 逻辑删除
  | 'createdTime' // 创建时间
  | 'updatedTime'; // 修改时间
export type HostInfoEntity = {
  // String 主键
  id?: string;
  // String 主机名称
  name?: string;
  // String MAC 地址
  mac?: string;
  // String 网关地址（默认：255.255.255.255）
  gateway?: string;
  // Integer 端口（默认：9）
  port?: number;
  // String 备注
  remark?: string;
  // Boolean 逻辑删除
  deleted?: boolean;
  // LocalDateTime 创建时间
  createdTime?: Date;
  // LocalDateTime 修改时间
  updatedTime?: Date;
  [key: string]: any;
};

const apiUri = '/wake-on-lan-server/host-info/';

export async function listHostInfo(
  params?: API.PageParams,
  sorter?: Record<string, any>,
  filter?: Record<string, any>,
) {
  return request<Struct.PageResponse<HostInfoEntity>>(apiUri, {
    method: 'GET',
    params: transformParams(params, sorter, filter),
  }).then(transformProTableData);
}

export async function getHostInfo(id: string) {
  return request<HostInfoEntity>(apiUri + id, { method: 'GET' });
}

export async function saveHostInfo(data: any) {
  return request(apiUri, { method: 'POST', data });
}

export async function startUp(id: string) {
  return request(`${apiUri}startUp`, { method: 'POST', params: { id } });
}

export async function deleteHostInfo(ids: any[]) {
  return request(apiUri, { method: 'DELETE', data: ids });
}
